package main

import "fmt"

// Usb 声明了两个没有实现的方法
type Usb interface {
	Start()
	Stop()
}

// Phone 让Phone实现 Usb接口的方法
type Phone struct {
}

func (p Phone) Start() {
	fmt.Println("手机开始工作....")
}
func (p Phone) Stop() {
	fmt.Println("手机停止工作....")
}

// Camera 让 Camera实现 Usb接口的方法
type Camera struct {
}

func (c Camera) Start() {
	fmt.Println("相机开始工作....")
}
func (c Camera) Stop() {
	fmt.Println("相机停止工作....")
}

// Computer 编写一个方法Working,接受一个Usb接口类型变量
// 实现了 Usb接口，就是实现了Usb接口中的所有方法
type Computer struct {
}

func (c Computer) Working(usb Usb) {
	usb.Start()
	usb.Stop()
}
func main() {
	var computer = Computer{}
	var camera = Camera{}
	var phone = Phone{}

	computer.Working(phone)
	computer.Working(camera)
}
